package com.ironman.original.generator;


import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Slf4j
@Component
public class GpsOriginalDataGenerator extends OriginalDataGenerator {

    double longitude = NumberUtil.round(RandomUtil.randomDouble(121.005572, 121.010572), 6).doubleValue();

    double latitude = NumberUtil.round(RandomUtil.randomDouble(31.102556, 31.128556), 6).doubleValue();

    @Override
    public String dataType() {
        return "gps";
    }

    @Override
    public String generate() {
        longitude += NumberUtil.round(RandomUtil.randomDouble(-0.0001, 0.0000), 6).doubleValue();
        latitude += NumberUtil.round(RandomUtil.randomDouble(-0.0001, 0.0001), 6).doubleValue();

        if (longitude > 135 || longitude < 73) {
            longitude = NumberUtil.round(RandomUtil.randomDouble(121.005572, 121.010572), 6).doubleValue();
        }
        if (latitude > 50 || latitude < 18) {
            latitude = NumberUtil.round(RandomUtil.randomDouble(31.102556, 31.128556), 6).doubleValue();
        }

        longitude = NumberUtil.round(longitude, 6).doubleValue();
        latitude = NumberUtil.round(latitude, 6).doubleValue();

        return StrUtil.format("A,{},{},{},{},{}",
                longitude,
                latitude,
                NumberUtil.round(RandomUtil.randomDouble(100.0000, 1001.0000), 4).doubleValue(),
                RandomUtil.randomInt(0, 360),
                "-4.3"
        );
    }

    @Override
    public void log(Boolean published, String data) {
        log.info("gps: {}\n{}", published, data);
    }
}

